When the Array Fills Up

Capacity and Resize


원소 수 n이 용량(capacity)과 같을 때 끝에 추가하면 더 큰 배열을 할당하고 기존 원소 n개를 같은 순서로 복사한 뒤 새 값을 쓴다.

원소 수 n현재 담긴 원소의 수다.
용량(capacity)내부 배열에 확보한 칸 수다.
재할당더 큰 배열을 할당하고 기존 원소를 옮긴 뒤 새 배열로 바꾸는 일이다.

가득 찬 배열에 추가하면 새 배열로 원소를 모두 복사한다

가득 찬 배열에 추가하면 새 배열 할당, 원소 복사, 새 값 쓰기, 활성 배열 전환이 차례로 일어난다.

기존 내부 배열(backing array)
새 내부 배열
초록 칸은 값이 들어 있는 칸, 점선이 아닌 굵은 테두리 배열이 지금 활성 배열이다. 위 단계 표시에서 초록 칸이 현재 단계다.

빈 칸이 있으면 재할당 없이 쓴다

추가 직전에 빈 칸이 있는지에 따라 할당과 복사가 필요한지가 달라진다.

왼쪽은 추가 전 조건, 초록 카드는 E를 추가한 뒤의 원소 수와 용량이다.